home *** CD-ROM | disk | FTP | other *** search
- /* ========================================
-
- nShellLib.c
-
- Copyright (c) 1993,1994 Newport Software Development
-
- You may distribute unmodified copies of this file for
- noncommercial purposes. You may use this file as a
- reference when writing your own nShell(tm) commands.
-
- All other rights are reserved.
-
- ======================================== */
-
- #ifdef __MWERKS__ // CodeWarrior requires an A4 setup
- #include <A4Stuff.h>
- #endif
-
- #include "nshc.h" // Get the C definitions for the nShell interface
-
- /* ======================================== */
- // Prototypes for internal use
- /* ======================================== */
-
- // output to stderr
-
- pascal void NSH_putchar_err(t_nshc_calls *nshc_calls, short c);
- pascal void NSH_puts_err(t_nshc_calls *nshc_calls, short *c);
- pascal void NSH_putStr_err(t_nshc_calls *nshc_calls, Str255 s);
-
- // output to stdout
-
- pascal void NSH_putchar(t_nshc_calls *nshc_calls, short c);
- pascal void NSH_puts(t_nshc_calls *nshc_calls, short *c);
- pascal void NSH_putStr(t_nshc_calls *nshc_calls, Str255 s);
-
- // input from stdin
-
- pascal int NSH_getchar(t_nshc_calls *nshc_calls);
- pascal int NSH_gets(t_nshc_calls *nshc_calls, short *s, int max_len);
- pascal int NSH_getStr(t_nshc_calls *nshc_calls, Str255 s);
-
- // variable access functions
-
- pascal int NSH_var_set(t_nshc_calls *nshc_calls, Str32 name, Str255 value);
- pascal int NSH_var_unset(t_nshc_calls *nshc_calls, Str32 name);
- pascal int NSH_var_env(t_nshc_calls *nshc_calls, Str32 name, Str255 value);
-
- // path expansion functions
-
- pascal int NSH_path_expand(t_nshc_calls *nshc_calls, Str255 path);
- pascal int NSH_path_to_FSSpec(t_nshc_calls *nshc_calls, Str255 pathname, FSSpec *spec );
- pascal int NSH_path_which(t_nshc_calls *nshc_calls, Str255 path);
-
- // dialog functions
-
- pascal void NSH_notify(t_nshc_calls *nshc_calls, Str255 s, int size);
- pascal int NSH_ask(t_nshc_calls *nshc_calls, Str255 s, int size);
-
- // misc
-
- pascal int NSH_match(t_nshc_calls *nshc_calls, Str255 pattern, Str255 target );
-
- /* ======================================== */
- // Callback vectors
- /* ======================================== */
-
- // output to stderr
-
- pascal void NSH_putchar_err(t_nshc_calls *nshc_calls, short c)
- {
- nshc_calls->NSH_putchar_err( c );
- }
-
- pascal void NSH_puts_err(t_nshc_calls *nshc_calls, short *p)
- {
- nshc_calls->NSH_puts_err( (char *)p );
- }
-
- pascal void NSH_putStr_err(t_nshc_calls *nshc_calls, Str255 s)
- {
- nshc_calls->NSH_putStr_err( s );
- }
-
- // output to stdout
-
- pascal void NSH_putchar(t_nshc_calls *nshc_calls, short c)
- {
- nshc_calls->NSH_putchar( c );
- }
-
- pascal void NSH_puts(t_nshc_calls *nshc_calls, short *p)
- {
- nshc_calls->NSH_puts( (char *)p );
- }
-
- pascal void NSH_putStr(t_nshc_calls *nshc_calls, Str255 s)
- {
- nshc_calls->NSH_putStr( s );
- }
-
- // input from stdin
-
- pascal int NSH_getchar(t_nshc_calls *nshc_calls)
- {
- return( nshc_calls->NSH_getchar() );
- }
-
- pascal int NSH_gets(t_nshc_calls *nshc_calls, short *s, int max_len)
- {
- return( nshc_calls->NSH_gets((char *)s, max_len) );
- }
-
- pascal int NSH_getStr(t_nshc_calls *nshc_calls, Str255 s)
- {
- return( nshc_calls->NSH_getStr(s) );
- }
-
- // variable access functions
-
- pascal int NSH_var_set(t_nshc_calls *nshc_calls, Str32 name, Str255 value)
- {
- return( nshc_calls->NSH_var_set(name,value) );
- }
-
- pascal int NSH_var_unset(t_nshc_calls *nshc_calls, Str32 name)
- {
- return( nshc_calls->NSH_var_unset(name) );
- }
-
- pascal int NSH_var_env(t_nshc_calls *nshc_calls, Str32 name, Str255 value)
- {
- return( nshc_calls->NSH_var_env(name,value) );
- }
-
- // path expansion functions
-
- pascal int NSH_path_expand(t_nshc_calls *nshc_calls, Str255 path)
- {
- return( nshc_calls->NSH_path_expand(path) );
- }
-
- pascal int NSH_path_to_FSSpec(t_nshc_calls *nshc_calls, Str255 pathname, FSSpec *spec )
- {
- return( nshc_calls->NSH_path_to_FSSpec(pathname,spec) );
- }
-
- pascal int NSH_path_which(t_nshc_calls *nshc_calls, Str255 path)
- {
- return( nshc_calls->NSH_path_which(path) );
- }
-
- // dialog functions
-
- pascal void NSH_notify(t_nshc_calls *nshc_calls, Str255 s, int size)
- {
- nshc_calls->NSH_notify( s, size );
- }
-
- pascal int NSH_ask(t_nshc_calls *nshc_calls, Str255 s, int size)
- {
- return( nshc_calls->NSH_ask( s, size ) );
- }
-
- // misc
-
- pascal int NSH_match(t_nshc_calls *nshc_calls, Str255 pattern, Str255 target )
- {
- return( nshc_calls->NSH_match(pattern,target) );
- }
-
- /* ======================================== */
- // Prototype for pascal callout
- /* ======================================== */
-
- extern pascal void theCommand(t_nshc_parms *nshc_parms, t_nshc_calls *nshc_calls);
-
- /* ======================================== */
- // A main, in C, which calls Pascal commands
- /* ======================================== */
-
- void main(t_nshc_parms *nshc_parms, t_nshc_calls *nshc_calls)
- {
- #ifdef __MWERKS__
- long oldA4 = SetCurrentA4();
- #endif
-
- theCommand( nshc_parms, nshc_calls );
-
- #ifdef __MWERKS__
- SetA4(oldA4); // CodeWarrior needs to restore A4
- #else
- ; // Think needs a ; to go with the Exit label
- #endif
- }
-
- /* ======================================== */
-